$(function(){
     init();
    function init(){
        // console.log(localStorage.getItem('userinfo'));
    //  先判断用户是否登录过--查询永久存储中的token值是否存在
    if(!localStorage.getItem('userinfo')){
    //    获取当前的URL,存储到会话存储
        sessionStorage.setItem('pageName',location.href);
    // 直接跳转到登陆页
    location.href='/pages/login.html';
    return;
    }else{
        $('body').fadeIn();
    }
//    调用数据请求
    getcart();
    
    // 调用注册方法
    evenLis();
    }


    // 发送请求，获取购物车数据，渲染页面
    function getcart(){
         // 登陆成功后，获取永久存储中的token值--注意json值转化--用于参数传递
         var token=JSON.parse(localStorage.getItem('userinfo')).token;
         $.ajax({
             url:'my/cart/all',
             type:'get',
             headers:{Authorization : token},
             success:function(res){
                //  console.log(res);
                //根据返回值 判断token值是否有效
                 if(res.meta.status==200){
                    //  先判断是否有商品数据，有商品数据才渲染，否则会报错
                    // console.log(res.data.cart_info);                   
                    if(res.data.cart_info){
                            //  获取返回的数据，渲染模板--商品数据存储在json中，需要转成对象数组
                        var cart_info=JSON.parse(res.data.cart_info);
                        // console.log(cart_info);
                        var html=template('mianTpl',{data:cart_info});
                        // 渲染数据
                        $('.cart-content ul').html(html);
                         // 初始化插件数字输入框
                          mui(".mui-numbox").numbox();
                        //   计算总价格
                        totalMoney();
                    }
                    if(res.data.cart_info =="{}"){
                        // console.log(123);
                        // 提示用户
                        mui.confirm("您的购物车空空如也，去逛逛吧！","提示",['确定','取消'],function(res){
                            if(res.index==0){
                                location.href='/index.html';
                            }else {
                                console.log('取消');
                                
                            }
                        })
                        
                    }
                 }
             }
         })
    }

    // 注册事件方法
    function evenLis(){
        // 注册点击‘+’‘-’控制商品数量的事件--动态生成元素，用委托
        $('.cart-content').on('tap','button',function(){
        //    计算总价格
            totalMoney();
        });
        // 注册点击编辑事件 切换类名 编辑购买数量
        $('#eit-btn').on('tap',function(){
            // 给body切换edit_status类名
            // console.log(123);
            $('#pyg_body').toggleClass("edit_status");
            // 判断body是否有edit_status这个类名，如果有文字编辑改成完成
            if($('#pyg_body').hasClass("edit_status")){
                $('#eit-btn').text('完成');  
            }else{
                $('#eit-btn').text('编辑');
                // 以下进行购物车编辑逻辑
                // 1、判断购物车是否有商品
                var lis=$('.cart-content li');
                if(lis.length==0){
                    // 提示用户
                    mui.toast('您还没购物，去商店逛逛...');
                    return;
                }
                // 编辑逻辑，发送数据，重新渲染购物车
                var infos={};
                for(var i=0;i<lis.length;i++){
                    li=lis[i];
                    // 获取li标签的自定义属性
                    var obj=$(li).data("obj");
                    // 重新获取购买的数量
                    obj.amount=$(li).find('.mui-numbox-input').val();
                    // 将数据存到infos中的传输数据
                    infos[obj.goods_id]=obj;
                }
                // 同步购物车
                syncCart(infos); 
            }
        });
        // 注册点击删除事件
        $('#del-btn').on('tap',function(){
            //获取被选中的input标签--用于判断用户是否进行删除操作
            var check=$(".cart-content input[name='g-che']:checked");
            // 判断是否有选中
            if(check.length==0){
                //提示用户
                mui.toast('还没选中商品');
                return;
            }
            // 弹出确认框
            mui.confirm("确认要删除吗？","提示",['确定','取消'],function(res){
                    if(res.index==0){
                        // 执行删除逻辑
                        // 1.获取没有被选中的标签，发送请求重新渲染数据
                        var uncheck=$(".cart-content input[name='g-che']").not(':checked').parents('li');
                        // 请求数据
                        var infos={};
                        // 遍历数组，将数据添加到请求数据对象中
                        for (var i=0;i<uncheck.length;i++){
                            var li=uncheck[i];
                            // 获取li中的自定义属性
                            var obj=$(li).data('obj');
                            // 添加到请求数据对象
                            infos[obj.goods_id]=obj;
                        }
                        // console.log(infos);
                        // 调用同步购物车函数
                        syncCart(infos);                        
                    }else if(res.index==1){
                        console.log('取消');  
                    }
            })
            
        });

        // 生成订单事件
        $('.ord-create').on('tap',function(){
        // 先判断是否有商品
        var lis=$('.cart-content li');
        if(lis.length==0){
            // 提示用户
            mui.toast('您还没购物，去商店逛逛...');
            return;
        }
        //  进行生成订单逻辑--构造要发送的数据，发送请求
        //   1、构造发送请求的数据
          var paramsObj={
            order_price:$('.total_price').text(),
            consignee_addr:'广州天河区',
            goods:[]
          };
        //  获取商品goods的信息
        for(var i=0;i<lis.length;i++){
            var li=lis[i];
            // 获取li标签的自定义属性
            var obj=$(li).data("obj");
            // 获取传输参数需要的商品数据，并添加到goods数组中
            var tem={
                goods_id:obj.goods_id,
                goods_number:$(li).find('.mui-numbox-input').val(),
                goods_price:obj.goods_price
            };
            // 添加到goods数组
            paramsObj.goods.push(tem);
        }
        // 发送请求
        create(paramsObj);
        })
    }

    // 计算总价格方法
    function totalMoney(){
           // 计算总价格，赋值给订单总额的标签--单价*数量再累加--全部的li标签
            // 定义总价格
            var total=0;
            // 获取所有的li标签
            var lis=$('.cart-content li');
            // console.log(lis);
            // 循环遍历lis，进行总价的计算
            for(var i=0;i<lis.length;i++){
                // 获取每个li
                var li =lis[i];
                // 商品的信息全部存储在li标签的自定义属性
                var obj=$(li).data("obj");
                // console.log(obj);
                // 获取商品单价
               var goods_price=obj.goods_price;
            //    console.log(goods_price);
            // 获取商品数量
            var goods_nums=$(li).find('.mui-numbox-input').val();
            // console.log(goods_nums);
            // 计算总价格，累加每个li 的总价
            total+=goods_price*goods_nums;
                        
            }
            // console.log(total); 
            // 将总价格赋值给总价标签
            $('.total_price').text(total) ;

    }
    // 同步购物车
    function syncCart(infos){
        // 发送请求，同步购物车
        $.ajax({
            url:'my/cart/sync',
            type:'post',
            data:{infos:JSON.stringify(infos)},
            headers: {
                Authorization: $.token()
              },
            success:function(res){
                //    console.log(res);
                if(res.meta.status==200){
                    // 删除成功--提示用户，重新渲染页面
                    mui.toast(res.meta.msg);
                    // 重新渲染页面
                    getcart();

                }else{
                    mui.toast(res.meta.msg);
                }
                
                   
            }
        })
        
    }

    // 生成订单发送请求
    function create(params){
        $.ajax({
            url:'my/orders/create',
            type:'post',
            data:params,
            headers: {
                Authorization: $.token()
              },
              success:function(res){
                //   console.log(res);
                if(res.meta.status==200){
                    mui.toast(res.meta.msg);
                    setTimeout(function(){
                        location.href='/pages/order.html';
                    },1000);
                }else{
                    mui.toast(ret.meta.msg);
                  }
                  
              }
        })
    }
})